package com.uhomecp.lambda.optional6;

import java.util.*;
import java.util.stream.Collectors;

/**
 * Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true，调用get()方法会返回该对象。
 * Optional 是个容器：它可以保存类型T的值，或者仅仅保存null。Optional提供很多有用的方法，这样我们就不用显式进行空值检测。
 * Optional 类的引入很好的解决空指针异常。
 */
public class Java8Tester {
    public static void main(String[] args) {
        Java8Tester java8Tester = new Java8Tester();
        Integer value1 = null;
        Integer value2 = new Integer(2);

        Optional<Integer> value11 = Optional.ofNullable(value1);
        Optional<Integer> value21 = Optional.of(value2);
        sum(value11, value21);
    }

    public static void sum(Optional<Integer> v1, Optional<Integer> v2){
        // Optional.isPresent - 判断值是否存在
        System.out.println("第一个值存在："+v1.isPresent());
        System.out.println("第二个值存在："+v2.isPresent());

        // Optional.orElse - 如果值存在，返回它，否则返回默认值
        Integer newV1 = v1.orElse(new Integer(0));
        System.out.println("newV1:"+newV1);

        //Optional.get - 获取值，值需要存在否则抛出异常
        Integer v2v = v2.get();
        System.out.println("v2v:"+v2v);
    }
}
